Designing a Programming Language to Provide Automated Self-testing for Formally Specified Software Components
نویسندگان
چکیده
Writing software is an error-prone activity. Compilers help detect some of these errors: syntactic mistakes plus those semantic mistakes that can be detected through the type system. However, locating faults beyond those detectable by the compiler (and other static analysis tools) is often relegated to the programmer, who must write thorough tests to ensure confidence in the correctness of the software. Although the specification and verification community has traditionally focused on decreasing software bugs by static verification, research has increasingly explored the dynamic analysis of the conformance of software components to its specifications. That is, researchers are investigating systems that can tell us whether a program’s behavior is consistent with its specification while the program is being executed. While dynamic techniques do not offer the same degree of assurance as full static verification, they may provide useful pragmatic benefits without the human intervention needed by currrent generation verification tools. When interpreted as a testing technique, dynamic analysis offers us a glimpse of future testing tools that offer another line of automatic error detection that augments the compiler, and helps the programmer reduce the number of tests he has to write. Modern unit testing tools such as JUnit allow some automation of the testing process. Specifically, they allow the automated execution of tests. The job of writing tests remains the responsibility of the programmer. In writing a test for a software component, the programmer must a. exercise a component such that a bug is likely to manifest; and b. write code to detect the bug. Current research suggests that the use of formal specifications, coupled with the right infrastructure, may alleviate much of the tedious process of writing the tests. For example, JML-JUnit [?] removes the need to write code that detects a component failure. It can act as a test-
منابع مشابه
A Software Architecture-based Testing Technique
A SOFTWARE ARCHITECTURE-BASED TESTING TECHNIQUE Zhenyi Jin, Ph.D. George Mason University, Fall 2000 Dissertation Director: Dr. A. Jefferson Offutt This dissertation defines a formal technique to test software systems at the architectural level, particularly for software systems developed using software Architecture Description Languages (ADL). There is a lack of formally defined testing techni...
متن کاملDesigning the Application of Verbal Fluency Test in Persian for Neurocognitive Evaluations
Verbal fluency test is a useful method to evaluate cognitive executive functions. Studies have shown that both types of verbal fluency test (phonemic and semantic) are influenced by brain damage. This test is rarely used by clinicians because it takes too much time to perform. Therefore, we decided to increase its speed and accuracy by designing a verbal fluency test application in Persian lang...
متن کاملThe Synchronous Approach to Designing Reactive Systems
Abstract. Synchronous programming is available through several formally defined languages having very different characteristics: ESTEREL is imperative, while LUSTRE and SIGNAL are declarative in style; STATECHARTS and ARGOS are graphical languages that allow one to program by constructing hierarchical automata. Our motivation for taking the synchronous design paradigm further, integrating imper...
متن کاملCoordination models and languages for parallel programming
Most conventional approaches to parallel programming are based on some basic kinds of synchronized mechanisms and related models of concurrency control: shared variables, message passing, and remote procedure calls. Whereas these paradigms suffice to program parallel applications, they hardly provide abstractions adequate for programmers or language designers. Hence, parallel programming using ...
متن کاملThe Synchronous Approach to Designing Reactive Systems
Synchronousprogramming is available through several formally defined languages having very different characteristics: ESTEREL is imperative, while LUSTRE and SIGNAL are declarative in style; STATECHARTS and ARGOS are graphical languages that allow one to program by constructing hierarchical automata. Our motivation for taking the synchronous design paradigm further, integrating imperative, decl...
متن کامل